home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / waisgate / HTStyle.h < prev    next >
C/C++ Source or Header  |  1995-05-09  |  6KB  |  162 lines

  1. /*  */
  2.  
  3. /*      Style Definition for Hypertext                          HTStyle.h
  4. **      ==============================
  5. **
  6. **      Styles allow the translation between a logical property of a piece of
  7. **      text and its physical representation.
  8. **
  9. **      A StyleSheet is a collection of styles, defining the
  10. **      translation necessary to represent a document.
  11. **      It is a linked list of styles.
  12. */
  13. #ifndef HTStyle_H
  14. #define HTStyle_H
  15.  
  16. #include "HTUtils.h"
  17. #include "HTAnchor.h"
  18.  
  19. /* #include "HTFont.h"          bad dependency */
  20. typedef long int HTFont;        /* Dummy definition instead */
  21.  
  22. #ifdef SHORT_NAMES
  23. #define HTStyleNew                      HTStNew
  24. #define HTStyleFree                     HTStFree
  25. #define HTStyleRead                     HTStRead
  26. #define HTStyleWrite                    HTStWrite
  27. #define HTStyleSheetNew                 HTStShNe
  28. #define HTStyleSheetFree                HTStShFr
  29. #define HTStyleNamed                    HTStName
  30. #define HTStyleForParagraph             HTStFoPa
  31. #define HTStyleMatching                 HTStMatc
  32. #define HTStyleForRun                   HTStFoRu
  33. #define HTStyleSheetAddStyle            HTStShAd
  34. #define HTStyleSheetRemoveStyle         HTStShRm
  35. #define HTStyleSheetRead                HTStShRe
  36. #define HTStyleSheetWrite               HTStShWr
  37. #endif
  38.  
  39. #ifdef NeXT_suppressed
  40. #include <appkit/appkit.h>
  41. typedef NXCoord HTCoord;
  42. #define HTParagraphStyle NXTextStyle
  43. #define HTCoord NXCoord
  44. typedef struct _color {
  45.         float   grey;
  46.         int     RGBColor;
  47. } HTColor;
  48. #else
  49.  
  50. typedef float HTCoord;
  51.  
  52. typedef struct _HTParagraphStyle {
  53.     HTCoord     left_indent;            /* @@@@ junk! etc etc*/
  54. } HTParagraphStyle;
  55.  
  56. typedef int HTColor;            /* Sorry about the US spelling! */
  57.  
  58. #endif
  59.  
  60.  
  61.  
  62. #define STYLE_NAME_LENGTH       80      /* @@@@@@@@@@@ */
  63.         
  64. typedef struct {
  65.     short               kind;           /* only NX_LEFTTAB implemented*/
  66.     HTCoord             position;       /* x coordinate for stop */
  67. } HTTabStop;
  68.  
  69.  
  70. /*      The Style Structure
  71. **      -------------------
  72. */
  73.  
  74. typedef struct _HTStyle {
  75.  
  76. /*      Style management information
  77. */
  78.     struct _HTStyle     *next;          /* Link for putting into stylesheet */
  79.     char *              name;           /* Style name */
  80.     char *              SGMLTag;        /* Tag name to start */
  81.  
  82.  
  83. /*      Character attributes    (a la NXRun)
  84. */
  85.     HTFont              font;           /* Font id */
  86.     HTCoord             fontSize;       /* The size of font, not independent */
  87.     HTColor             color;  /* text gray of current run */
  88.     int                 superscript;    /* superscript (-sub) in points */
  89.  
  90.     HTAnchor            *anchor;        /* Anchor id if any, else zero */
  91.  
  92. /*      Paragraph Attribtes     (a la NXTextStyle)
  93. */
  94.     HTCoord             indent1st;      /* how far first line in paragraph is
  95.                                  * indented */
  96.     HTCoord             leftIndent;     /* how far second line is indented */
  97.     HTCoord             rightIndent;    /* (Missing from NeXT version */
  98.     short               alignment;      /* quad justification */
  99.     HTCoord             lineHt;         /* line height */
  100.     HTCoord             descentLine;    /* descender bottom from baseline */
  101.     HTTabStop           *tabs;          /* array of tab stops, 0 terminated */
  102.  
  103.     BOOL                wordWrap;       /* Yes means wrap at space not char */
  104.     BOOL                freeFormat;     /* Yes means \n is just white space */
  105.     HTCoord             spaceBefore;    /* Omissions from NXTextStyle */
  106.     HTCoord             spaceAfter;
  107.     int                 paraFlags;      /* Paragraph flags, bits as follows: */
  108.  
  109. #define PARA_KEEP       1       /* Do not break page within this paragraph */
  110. #define PARA_WITH_NEXT  2       /* Do not break page after this paragraph */
  111.  
  112. #define HT_JUSTIFY 0            /* For alignment */
  113. #define HT_LEFT 1
  114. #define HT_RIGHT 2
  115. #define HT_CENTER 3
  116.  
  117. } HTStyle;
  118.  
  119.  
  120. /*      Style functions:
  121. */
  122. extern HTStyle * HTStyleNew NOPARAMS;
  123. extern HTStyle* HTStyleNewNamed PARAMS ((CONST char * name));
  124. extern HTStyle * HTStyleFree PARAMS((HTStyle * self));
  125. #ifdef SUPRESS
  126. extern HTStyle * HTStyleRead PARAMS((HTStyle * self, HTStream * stream));
  127. extern HTStyle * HTStyleWrite PARAMS((HTStyle * self, HTStream * stream));
  128. #endif
  129. /*              Style Sheet
  130. **              -----------
  131. */
  132. typedef struct _HTStyleSheet {
  133.         char *          name;
  134.         HTStyle *       styles;
  135. } HTStyleSheet;
  136.  
  137.  
  138. /*      Stylesheet functions:
  139. */
  140. extern HTStyleSheet * HTStyleSheetNew NOPARAMS;
  141. extern HTStyleSheet * HTStyleSheetFree PARAMS((HTStyleSheet * self));
  142. extern HTStyle * HTStyleNamed PARAMS((HTStyleSheet * self, CONST char * name));
  143. extern HTStyle * HTStyleForParagraph PARAMS((HTStyleSheet * self,
  144.         HTParagraphStyle * paraStyle));
  145. extern HTStyle * HTStyleMatching PARAMS((HTStyleSheet *self, HTStyle * style));
  146. /* extern HTStyle * HTStyleForRun PARAMS((HTStyleSheet *self, NXRun * run)); */
  147. extern HTStyleSheet * HTStyleSheetAddStyle PARAMS((HTStyleSheet * self,
  148.         HTStyle * style));
  149. extern HTStyleSheet * HTStyleSheetRemoveStyle PARAMS((HTStyleSheet * self,
  150.         HTStyle * style));
  151. #ifdef SUPPRESS
  152. extern HTStyleSheet * HTStyleSheetRead PARAMS((HTStyleSheet * self,
  153.                                                 HTStream * stream));
  154. extern HTStyleSheet * HTStyleSheetWrite PARAMS((HTStyleSheet * self,
  155.                                                 HTStream * stream));
  156. #endif
  157. #define CLEAR_POINTER ((void *)-1)      /* Pointer value means "clear me" */
  158. #endif /* HTStyle_H */
  159. /*
  160.  
  161.     */
  162.